3. 寄存器保存规则
调用者保存(caller-saved):v0–v31、u16–u31。被调用者保存(callee-saved):v32–v127、u32–u59;callee 必须在返回前恢复。u60 为临时 ABI/驱动 scratch,u61 保留。u62 是 return address,u63 是 per-lane scratch 的字节偏移(不得当作全局指针)。64-bit pair 必须从偶数编号开始,保存规则对 pair 的两个寄存器同时适用。
普通函数调用使用 jal rd,target 或 jalr rd,base+offset;ABI 推荐 rd=u62。被调用者不得假设 EXEC 全 1,若需要全 warp 工作必须保存并恢复 EXEC。返回使用 jr u62,返回前清空本函数发起的异步队列或执行等价的 waitcnt。